//flutter 的提示方式

//1: SnackBar
//const SnackBar({
//Key key,
//@required this.content,//内容
//this.backgroundColor,//背景
//this.action,//其他操作
//this.duration: _kSnackBarDisplayDuration,//显示时长
//this.animation,//进出动画
//})

//只不过action参数需要说明下，action就是可以在SnackBar的右侧显示的Widget(按钮、文字等)，
// 点击这个Widget可以触发相应的操作，如常见的 撤回 操作。
//
//虽然构造方法很简单，但是我们并不能直接显示SnackBar，我们可以借助于
//
//Scaffold.of(context).showSnackBar（）来显示一个SnackBar，值得注意的是这个context必须不能是Scaffold节点下的context,
// 因为Scaffold.of（）方法需要从Widget树中去找到Scaffold的Context，所以如果直接在Scaffold中使用showSnackBar，
// 需要在外城包括上Builder Widget，这个Builder不做任何的其他操作，只不过把Widget树往下移了一层而已。
import 'package:flutter/material.dart';
import 'package:flutter_practice/utils/Utils.dart';

class MySnackBarDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build

    return Scaffold(
      appBar: Utils.getAppBar('snackBar提示'),
      body: Center(
        child: Builder(builder: (BuildContext context) {
          return RaisedButton(
            onPressed: () {
              Scaffold.of(context).showSnackBar(SnackBar(
                    content: Text('提示信息'),
                    action: SnackBarAction(label: "撤回", onPressed: () {}),
                  ));
            },
            child: Text('点我'),
            color: Colors.blue,
          );
        }),
      ),
    );
  }
}

//SimpleDialog 最简单的对话框
//const SimpleDialog({
//Key key,
//this.title,//标题
//this.titlePadding,标题padding
//this.children,//内容
//this.contentPadding,内容padding
//})
class MySimpleDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: Utils.getAppBar('simple dialog'),
      body: Center(
        child: Builder(builder: (BuildContext context) {
          return RaisedButton(
            onPressed: () {
              showDialog(
                  context: context,
                  child: SimpleDialog(
                    contentPadding: EdgeInsets.all(10.0),
                    title: Text('标题'),
                    children: <Widget>[
                      Text('内容区域'),
                      ListTile(
                        leading: Icon(Icons.android),
                        title: Text('android'),
                      ),
                      ListTile(
                        leading: Icon(Icons.person),
                        title: Text('任务'),
                      ),
                    ],
                  ));
            },
            child: Text('出来吧弹框'),
            color: Colors.blue,
          );
        }),
      ),
    );
  }
}

//AlertDialog  SimpleDialog 的简单封装

class MyAlertDialogDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: Utils.getAppBar('alertDialog'),
      body: Center(
        child: Builder(builder: (BuildContext context) {
          return RaisedButton(
            onPressed: () {
              showDialog(
                context: context,
                child: AlertDialog(
                  contentPadding: EdgeInsets.all(10.0),
                  content: Text('这是AlertDialog'),
                  actions: <Widget>[
                    FlatButton(
                        onPressed: () {
                          Navigator.pop(context);
                        },
                        child: Text('确定')),
                  ],
                ),
              );
            },
            child: Text('dialog 弹出'),
            color: Colors.blue,
          );
        }),
      ),
    );
  }
}

//AboutDialog 也是基于SimpleDialog 封装  用法和AlertDialog类似  替换上面的 onPressed:
//() {
//showDialog(
//context: context,
//child: new AboutDialog(
//applicationName: "最佳助手：",
//applicationVersion: "V1.0",
//applicationIcon: new Icon(Icons.android,color: Colors.blueAccent,),
//children: <Widget>[new Text("更新摘要\n新增飞天遁地功能\n优化用户体验")],
//));
//},

//BottomSheet  底部菜单

//也被称为底部菜单，通常情况下分享操作界面使用的比较多。
//
//如果要显示BottomSheet我们可以调用，showBottomSheet（）或者showModalBottomSheet（）方法。这两种方法都可以显示BottomSheet，
// 只不过第一个是从新打开了一个界面来显示，第二个方法是直接在当前界面的下面来显示。
//
//两个方法都需要传入一个Context和一个WidgetBuilder

class MyBottomSheetDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: Utils.getAppBar('底部弹出菜单'),
      body: Center(
        child: Builder(builder: (BuildContext context) {
          return RaisedButton(
            onPressed: () {
              showBottomSheet(
                context: context,
                builder: (BuildContext context) {
                  return Container(
                    child: Padding(
                      padding: EdgeInsets.all(10.0),
                      child: Column(
                        children: <Widget>[
                          ListTile(
                            leading: Icon(Icons.android),
                            title: Text('安卓'),
                          ),
                          ListTile(
                            leading: Icon(Icons.person),
                            title: Text('人物'),
                          ),
                          ListTile(
                            leading: Icon(Icons.message),
                            title: Text('信息'),
                          ),
                        ],
                      ),
                    ),
                  );
                },
              );
            },
            child: Text('bottomSheet'),
            color: Colors.blue,
          );
        }),
      ),
    );
  }
}
// 从底部弹出
class MyBottomSheetDemo2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: Utils.getAppBar('底部弹出菜单'),
      body: Center(
        child: Builder(builder: (BuildContext context) {
          return RaisedButton(
            onPressed: () {
              showModalBottomSheet(
                context: context,
                builder: (BuildContext context) {
                  return Container(
                    child: Padding(
                      padding: EdgeInsets.all(10.0),
                      child: Column(
                        children: <Widget>[
                          ListTile(
                            leading: Icon(Icons.android),
                            title: Text('安卓'),
                          ),
                          ListTile(
                            leading: Icon(Icons.person),
                            title: Text('人物'),
                          ),
                          ListTile(
                            leading: Icon(Icons.message),
                            title: Text('信息'),
                          ),
                        ],
                      ),
                    ),
                  );
                },
              );
            },
            child: Text('bottomSheet'),
            color: Colors.blue,
          );
        }),
      ),
    );
  }
}
